/*
* Com.java
* Copyright (C) 2003
* 
* $Id: Com.java,v 1.14 2005/12/16 21:17:08 salomo Exp $
*/
/*
Copyright (C) 1997-2001 Id Software, Inc.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
using System;
using Defines = Suake2.UI.Defines;
using Globals = Suake2.UI.Globals;
using CL = Suake2.UI.client.CL;
using Console = Suake2.UI.client.Console;
using Cmd = Suake2.UI.game.Cmd;
using SV_MAIN = Suake2.UI.server.SV_MAIN;
using Sys = Suake2.UI.sys.Sys;
using Suake2.UI.util;
namespace Suake2.UI.qcommon
{
	
	/// <summary> Com
	/// 
	/// </summary>
	public sealed class Com
	{
		public Com()
		{
			InitBlock();
		}
		public class AnonymousClassxcommand_t:xcommand_t
		{
			public override void  execute()
			{
				jake2.qcommon.Com.Error(Defines.ERR_FATAL, Cmd.Argv(1));
			}
		}
		private void  InitBlock()
		{
			com_argv = ;
			com_token = ;
		}
		
		internal static System.String debugContext = "";
		internal static System.String _debugContext = "";
		
		internal static int com_argc;
		//UPGRADE_NOTE: The initialization of  'com_argv' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static System.String[] com_argv;
		
		public abstract class RD_Flusher
		{
			public abstract void  rd_flush(int target, System.Text.StringBuilder buffer);
		}
		
		internal static int rd_target;
		internal static System.Text.StringBuilder rd_buffer;
		internal static int rd_buffersize;
		internal static RD_Flusher rd_flusher;
		
		public static void  BeginRedirect(int target, System.Text.StringBuilder buffer, int buffersize, RD_Flusher flush)
		{
			if (0 == target || null == buffer || 0 == buffersize || null == flush)
				return ;
			
			rd_target = target;
			rd_buffer = buffer;
			rd_buffersize = buffersize;
			rd_flusher = flush;
			
			rd_buffer.Length = 0;
		}
		
		public static void  EndRedirect()
		{
			rd_flusher.rd_flush(rd_target, rd_buffer);
			
			rd_target = 0;
			rd_buffer = null;
			rd_buffersize = 0;
			rd_flusher = null;
		}
		
		internal static bool recursive = false;
		
		internal static System.String msg = "";
		
		// helper class to replace the pointer-pointer
		public class ParseHelp
		{
			public bool Eof
			{
				get
				{
					return index >= length;
				}
				
			}
			public ParseHelp(System.String in_Renamed)
			{
				if (in_Renamed == null)
				{
					data = null;
					length = 0;
				}
				else
				{
					data = in_Renamed.ToCharArray();
					length = data.Length;
				}
				index = 0;
			}
			
			public ParseHelp(char[] in_Renamed):this(in_Renamed, 0)
			{
			}
			
			public ParseHelp(char[] in_Renamed, int offset)
			{
				data = in_Renamed;
				index = offset;
				if (data != null)
					length = data.Length;
				else
					length = 0;
			}
			
			public char getchar()
			{
				if (index < length)
				{
					return data[index];
				}
				return (char) (0);
			}
			
			public char nextchar()
			{
				// faster than if
				index++;
				if (index < length)
				{
					return data[index];
				}
				return (char) (0);
			}
			
			public char prevchar()
			{
				if (index > 0)
				{
					index--;
					return data[index];
				}
				return (char) (0);
			}
			
			public int index;
			public char[] data;
			private int length;
			
			public char skipwhites()
			{
				char c = (char) (0);
				while (index < length && ((c = data[index]) <= ' ') && c != 0)
					index++;
				return c;
			}
			
			public char skipwhitestoeol()
			{
				char c = (char) (0);
				while (index < length && ((c = data[index]) <= ' ') && c != '\n' && c != 0)
					index++;
				return c;
			}
			
			public char skiptoeol()
			{
				char c = (char) (0);
				while (index < length && (c = data[index]) != '\n' && c != 0)
					index++;
				return c;
			}
		}
		
		//UPGRADE_NOTE: The initialization of  'com_token' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		public static char[] com_token;
		
		// See GameSpanw.ED_ParseEdict() to see how to use it now.
		public static System.String Parse(ParseHelp hlp)
		{
			int c;
			int len = 0;
			
			if (hlp.data == null)
			{
				return "";
			}
			
			while (true)
			{
				//	   skip whitespace
				hlp.skipwhites();
				if (hlp.Eof)
				{
					hlp.data = null;
					return "";
				}
				
				//	   skip // comments
				if (hlp.getchar() == '/')
				{
					if (hlp.nextchar() == '/')
					{
						hlp.skiptoeol();
						// goto skip whitespace
						continue;
					}
					else
					{
						hlp.prevchar();
						break;
					}
				}
				else
					break;
			}
			
			//	   handle quoted strings specially
			if (hlp.getchar() == '\"')
			{
				hlp.nextchar();
				while (true)
				{
					c = hlp.getchar();
					hlp.nextchar();
					if (c == '\"' || c == 0)
					{
						return new System.String(com_token, 0, len);
					}
					if (len < Defines.MAX_TOKEN_CHARS)
					{
						com_token[len] = (char) c;
						len++;
					}
				}
			}
			
			//	   parse a regular word
			c = hlp.getchar();
			do 
			{
				if (len < Defines.MAX_TOKEN_CHARS)
				{
					com_token[len] = (char) c;
					len++;
				}
				c = hlp.nextchar();
			}
			while (c > 32);
			
			if (len == Defines.MAX_TOKEN_CHARS)
			{
				Com.Printf("Token exceeded " + Defines.MAX_TOKEN_CHARS + " chars, discarded.\n");
				len = 0;
			}
			
			return new System.String(com_token, 0, len);
		}
		
		//UPGRADE_NOTE: The initialization of  'Error_f' was moved to static method 'jake2.qcommon.Com'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		public static xcommand_t Error_f;
		
		public static void  Error(int code, System.String fmt)
		{
			Error(code, fmt, null);
		}
		
		public static void  Error(int code, System.String fmt, Vargs vargs)
		{
			// va_list argptr;
			// static char msg[MAXPRINTMSG];
			
			if (recursive)
			{
				Sys.Error("recursive error after: " + msg);
			}
			recursive = true;
			
			msg = sprintf(fmt, vargs);
			
			if (code == Defines.ERR_DISCONNECT)
			{
				CL.Drop();
				recursive = false;
				throw new longjmpException();
			}
			else if (code == Defines.ERR_DROP)
			{
				Com.Printf("********************\nERROR: " + msg + "\n********************\n");
				SV_MAIN.SV_Shutdown("Server crashed: " + msg + "\n", false);
				CL.Drop();
				recursive = false;
				throw new longjmpException();
			}
			else
			{
				SV_MAIN.SV_Shutdown("Server fatal crashed: %s" + msg + "\n", false);
				CL.Shutdown();
			}
			
			Sys.Error(msg);
		}
		
		/// <summary> Com_InitArgv checks the number of command line arguments
		/// and copies all arguments with valid length into com_argv.
		/// </summary>
		internal static void  InitArgv(System.String[] args)
		{
			
			if (args.Length > Defines.MAX_NUM_ARGVS)
			{
				Com.Error(Defines.ERR_FATAL, "argc > MAX_NUM_ARGVS");
			}
			
			Com.com_argc = args.Length;
			for (int i = 0; i < Com.com_argc; i++)
			{
				if (args[i].Length >= Defines.MAX_TOKEN_CHARS)
					Com.com_argv[i] = "";
				else
					Com.com_argv[i] = args[i];
			}
		}
		
		public static void  DPrintf(System.String fmt)
		{
			_debugContext = debugContext;
			DPrintf(fmt, null);
			_debugContext = "";
		}
		
		public static void  dprintln(System.String fmt)
		{
			DPrintf(_debugContext + fmt + "\n", null);
		}
		
		public static void  Printf(System.String fmt)
		{
			Printf(_debugContext + fmt, null);
		}
		
		public static void  DPrintf(System.String fmt, Vargs vargs)
		{
			if (Globals.developer == null || Globals.developer.value_Renamed == 0)
				return ; // don't confuse non-developers with techie stuff...
			_debugContext = debugContext;
			Printf(fmt, vargs);
			_debugContext = "";
		}
		
		/// <summary>Prints out messages, which can also be redirected to a remote client. </summary>
		public static void  Printf(System.String fmt, Vargs vargs)
		{
			System.String msg = sprintf(_debugContext + fmt, vargs);
			if (rd_target != 0)
			{
				if ((msg.Length + rd_buffer.Length) > (rd_buffersize - 1))
				{
					rd_flusher.rd_flush(rd_target, rd_buffer);
					rd_buffer.Length = 0;
				}
				rd_buffer.Append(msg);
				return ;
			}
			
			Console.Print(msg);
			
			// also echo to debugging console
			Sys.ConsoleOutput(msg);
			
			// logfile
			if (Globals.logfile_active != null && Globals.logfile_active.value_Renamed != 0)
			{
				System.String name;
				
				if (Globals.logfile == null)
				{
					name = FS.Gamedir() + "/qconsole.log";
					if (Globals.logfile_active.value_Renamed > 2)
						try
						{
							Globals.logfile = SupportClass.RandomAccessFileSupport.CreateRandomAccessFile(name, "rw");
							Globals.logfile.Seek(Globals.logfile.Length, System.IO.SeekOrigin.Begin);
						}
						catch (System.Exception e)
						{
							// TODO: do quake2 error handling!
							SupportClass.WriteStackTrace(e, Console.Error);
						}
					else
						try
						{
							Globals.logfile = SupportClass.RandomAccessFileSupport.CreateRandomAccessFile(name, "rw");
						}
						catch (System.IO.FileNotFoundException e1)
						{
							// TODO: do quake2 error handling!
							SupportClass.WriteStackTrace(e1, Console.Error);
						}
				}
				if (Globals.logfile != null)
					try
					{
						SupportClass.RandomAccessFileSupport.WriteChars(msg, Globals.logfile);
					}
					catch (System.IO.IOException e)
					{
						// TODO: do quake2 error handling!
						SupportClass.WriteStackTrace(e, Console.Error);
					}
				if (Globals.logfile_active.value_Renamed > 1)
				{
				} // do nothing
				// fflush (logfile);		// force it to save every time
			}
		}
		
		public static void  Println(System.String fmt)
		{
			Printf(_debugContext + fmt + "\n");
		}
		
		public static System.String sprintf(System.String fmt, Vargs vargs)
		{
			System.String msg = "";
			if (vargs == null || vargs.size() == 0)
			{
				msg = fmt;
			}
			else
			{
				msg = new PrintfFormat(fmt).sprintf(vargs.toArray());
			}
			return msg;
		}
		
		public static int Argc()
		{
			return Com.com_argc;
		}
		
		public static System.String Argv(int arg)
		{
			if (arg < 0 || arg >= Com.com_argc || Com.com_argv[arg].Length < 1)
				return "";
			return Com.com_argv[arg];
		}
		
		public static void  ClearArgv(int arg)
		{
			if (arg < 0 || arg >= Com.com_argc || Com.com_argv[arg].Length < 1)
				return ;
			Com.com_argv[arg] = "";
		}
		
		public static void  Quit()
		{
			SV_MAIN.SV_Shutdown("Server quit\n", false);
			CL.Shutdown();
			
			if (Globals.logfile != null)
			{
				try
				{
					Globals.logfile.Close();
				}
				catch (System.IO.IOException e)
				{
				}
				Globals.logfile = null;
			}
			
			Sys.Quit();
		}
		
		public static void  SetServerState(int i)
		{
			Globals.server_state = i;
		}
		
		public static int BlockChecksum(sbyte[] buf, int length)
		{
			return MD4.Com_BlockChecksum(buf, length);
		}
		
		public static System.String StripExtension(System.String string_Renamed)
		{
			int i = string_Renamed.LastIndexOf('.');
			if (i < 0)
				return string_Renamed;
			return string_Renamed.Substring(0, (i) - (0));
		}
		
		/// <summary> CRC table. </summary>
		internal static sbyte[] chktbl = new sbyte[]{(sbyte) SupportClass.Identity(0x84), (sbyte) 0x47, (sbyte) 0x51, (sbyte) SupportClass.Identity(0xc1), (sbyte) SupportClass.Identity(0x93), (sbyte) 0x22, (sbyte) 0x21, (sbyte) 0x24, (sbyte) 0x2f, (sbyte) 0x66, (sbyte) 0x60, (sbyte) 0x4d, (sbyte) SupportClass.Identity(0xb0), (sbyte) 0x7c, (sbyte) SupportClass.Identity(0xda), (sbyte) SupportClass.Identity(0x88), (sbyte) 0x54, (sbyte) 0x15, (sbyte) 0x2b, (sbyte) SupportClass.Identity(0xc6), (sbyte) 0x6c, (sbyte) SupportClass.Identity(0x89), (sbyte) SupportClass.Identity(0xc5), (sbyte) SupportClass.Identity(0x9d), (sbyte) 0x48, (sbyte) SupportClass.Identity(0xee), (sbyte) SupportClass.Identity(0xe6), (sbyte) SupportClass.Identity(0x8a), (sbyte) SupportClass.Identity(0xb5), (sbyte) SupportClass.Identity(0xf4), (sbyte) SupportClass.Identity(0xcb), (sbyte) SupportClass.Identity(0xfb), (sbyte) SupportClass.Identity(0xf1), (sbyte) 0x0c, (sbyte) 0x2e, (sbyte) SupportClass.Identity(0xa0), (sbyte) SupportClass.Identity(0xd7), (sbyte) SupportClass.Identity(0xc9), (sbyte) 0x1f, (sbyte) SupportClass.Identity(0xd6), (sbyte) 0x06, (sbyte) SupportClass.Identity(0x9a), (sbyte) 0x09, (sbyte) 0x41, (sbyte) 0x54, (sbyte) 0x67, (sbyte) 0x46, (sbyte) SupportClass.Identity(0xc7), (sbyte) 0x74, (sbyte) SupportClass.Identity(0xe3), (sbyte) SupportClass.Identity(0xc8), (sbyte) SupportClass.Identity(0xb6), (sbyte) 0x5d, (sbyte) SupportClass.Identity(0xa6), (sbyte) 0x36, (sbyte) SupportClass.Identity(0xc4), (sbyte) SupportClass.Identity(0xab), (sbyte) 0x2c, (sbyte) 0x7e, (sbyte) SupportClass.Identity(0x85), (sbyte) SupportClass.Identity(0xa8), (sbyte) SupportClass.Identity(0xa4), (sbyte) SupportClass.Identity(0xa6), (sbyte) 0x4d, (sbyte) SupportClass.Identity(0x96), (sbyte) 0x19, (sbyte) 0x19, (sbyte) SupportClass.Identity(0x9a), (sbyte) SupportClass.Identity(0xcc), (sbyte) SupportClass.Identity(0xd8), (sbyte) SupportClass.Identity(0xac), (sbyte) 0x39, (sbyte) 0x5e, (sbyte) 0x3c, (sbyte) SupportClass.Identity(0xf2), (sbyte) SupportClass.
			Identity(0xf5), (sbyte) 0x5a, (sbyte) 0x72, (sbyte) SupportClass.Identity(0xe5), (sbyte) SupportClass.Identity(0xa9), (sbyte) SupportClass.Identity(0xd1), (sbyte) SupportClass.Identity(0xb3), (sbyte) 0x23, (sbyte) SupportClass.Identity(0x82), (sbyte) 0x6f, (sbyte) 0x29, (sbyte) SupportClass.Identity(0xcb), (sbyte) SupportClass.Identity(0xd1), (sbyte) SupportClass.Identity(0xcc), (sbyte) 0x71, (sbyte) SupportClass.Identity(0xfb), (sbyte) SupportClass.Identity(0xea), (sbyte) SupportClass.Identity(0x92), (sbyte) SupportClass.Identity(0xeb), (sbyte) 0x1c, (sbyte) SupportClass.Identity(0xca), (sbyte) 0x4c, (sbyte) 0x70, (sbyte) SupportClass.Identity(0xfe), (sbyte) 0x4d, (sbyte) SupportClass.Identity(0xc9), (sbyte) 0x67, (sbyte) 0x43, (sbyte) 0x47, (sbyte) SupportClass.Identity(0x94), (sbyte) SupportClass.Identity(0xb9), (sbyte) 0x47, (sbyte) SupportClass.Identity(0xbc), (sbyte) 0x3f, (sbyte) 0x01, (sbyte) SupportClass.Identity(0xab), (sbyte) 0x7b, (sbyte) SupportClass.Identity(0xa6), (sbyte) SupportClass.Identity(0xe2), (sbyte) 0x76, (sbyte) SupportClass.Identity(0xef), (sbyte) 0x5a, (sbyte) 0x7a, (sbyte) 0x29, (sbyte) 0x0b, (sbyte) 0x51, (sbyte) 0x54, (sbyte) 0x67, (sbyte) SupportClass.Identity(0xd8), (sbyte) 0x1c, (sbyte) 0x14, (sbyte) 0x3e, (sbyte) 0x29, (sbyte) SupportClass.Identity(0xec), (sbyte) SupportClass.Identity(0xe9), (sbyte) 0x2d, (sbyte) 0x48, (sbyte) 0x67, (sbyte) SupportClass.Identity(0xff), (sbyte) SupportClass.Identity(0xed), (sbyte) 0x54, (sbyte) 0x4f, (sbyte) 0x48, (sbyte) SupportClass.Identity(0xc0), (sbyte) SupportClass.Identity(0xaa), (sbyte) 0x61, (sbyte) SupportClass.Identity(0xf7), (sbyte) 0x78, (sbyte) 0x12, (sbyte) 0x03, (sbyte) 0x7a, (sbyte) SupportClass.Identity(0x9e), (sbyte) SupportClass.Identity(0x8b), (sbyte) SupportClass.Identity(0xcf), (sbyte) SupportClass.Identity(0x83), (sbyte) 0x7b, (sbyte) SupportClass.Identity(0xae), (sbyte) SupportClass.Identity(0xca), (sbyte) 0x7b, (sbyte) SupportClass.Identity(0xd9), (sbyte) SupportClass.Identity(0xe9), (sbyte) 0x53, (sbyte
			) 0x2a, (sbyte) SupportClass.Identity(0xeb), (sbyte) SupportClass.Identity(0xd2), (sbyte) SupportClass.Identity(0xd8), (sbyte) SupportClass.Identity(0xcd), (sbyte) SupportClass.Identity(0xa3), (sbyte) 0x10, (sbyte) 0x25, (sbyte) 0x78, (sbyte) 0x5a, (sbyte) SupportClass.Identity(0xb5), (sbyte) 0x23, (sbyte) 0x06, (sbyte) SupportClass.Identity(0x93), (sbyte) SupportClass.Identity(0xb7), (sbyte) SupportClass.Identity(0x84), (sbyte) SupportClass.Identity(0xd2), (sbyte) SupportClass.Identity(0xbd), (sbyte) SupportClass.Identity(0x96), (sbyte) 0x75, (sbyte) SupportClass.Identity(0xa5), (sbyte) 0x5e, (sbyte) SupportClass.Identity(0xcf), (sbyte) 0x4e, (sbyte) SupportClass.Identity(0xe9), (sbyte) 0x50, (sbyte) SupportClass.Identity(0xa1), (sbyte) SupportClass.Identity(0xe6), (sbyte) SupportClass.Identity(0x9d), (sbyte) SupportClass.Identity(0xb1), (sbyte) SupportClass.Identity(0xe3), (sbyte) SupportClass.Identity(0x85), (sbyte) 0x66, (sbyte) 0x28, (sbyte) 0x4e, (sbyte) 0x43, (sbyte) SupportClass.Identity(0xdc), (sbyte) 0x6e, (sbyte) SupportClass.Identity(0xbb), (sbyte) 0x33, (sbyte) SupportClass.Identity(0x9e), (sbyte) SupportClass.Identity(0xf3), (sbyte) 0x0d, (sbyte) 0x00, (sbyte) SupportClass.Identity(0xc1), (sbyte) SupportClass.Identity(0xcf), (sbyte) 0x67, (sbyte) 0x34, (sbyte) 0x06, (sbyte) 0x7c, (sbyte) 0x71, (sbyte) SupportClass.Identity(0xe3), (sbyte) 0x63, (sbyte) SupportClass.Identity(0xb7), (sbyte) SupportClass.Identity(0xb7), (sbyte) SupportClass.Identity(0xdf), (sbyte) SupportClass.Identity(0x92), (sbyte) SupportClass.Identity(0xc4), (sbyte) SupportClass.Identity(0xc2), (sbyte) 0x25, (sbyte) 0x5c, (sbyte) SupportClass.Identity(0xff), (sbyte) SupportClass.Identity(0xc3), (sbyte) 0x6e, (sbyte) SupportClass.Identity(0xfc), (sbyte) SupportClass.Identity(0xaa), (sbyte) 0x1e, (sbyte) 0x2a, (sbyte) 0x48, (sbyte) 0x11, (sbyte) 0x1c, (sbyte) 0x36, (sbyte) 0x68, (sbyte) 0x78, (sbyte) SupportClass.Identity(0x86), (sbyte) 0x79, (sbyte) 0x30, (sbyte) SupportClass.Identity(0xc3), (sbyte) SupportClass.
			Identity(0xd6), (sbyte) SupportClass.Identity(0xde), (sbyte) SupportClass.Identity(0xbc), (sbyte) 0x3a, (sbyte) 0x2a, (sbyte) 0x6d, (sbyte) 0x1e, (sbyte) 0x46, (sbyte) SupportClass.Identity(0xdd), (sbyte) SupportClass.Identity(0xe0), (sbyte) SupportClass.Identity(0x80), (sbyte) 0x1e, (sbyte) 0x44, (sbyte) 0x3b, (sbyte) 0x6f, (sbyte) SupportClass.Identity(0xaf), (sbyte) 0x31, (sbyte) SupportClass.Identity(0xda), (sbyte) SupportClass.Identity(0xa2), (sbyte) SupportClass.Identity(0xbd), (sbyte) 0x77, (sbyte) 0x06, (sbyte) 0x56, (sbyte) SupportClass.Identity(0xc0), (sbyte) SupportClass.Identity(0xb7), (sbyte) SupportClass.Identity(0x92), (sbyte) 0x4b, (sbyte) 0x37, (sbyte) SupportClass.Identity(0xc0), (sbyte) SupportClass.Identity(0xfc), (sbyte) SupportClass.Identity(0xc2), (sbyte) SupportClass.Identity(0xd5), (sbyte) SupportClass.Identity(0xfb), (sbyte) SupportClass.Identity(0xa8), (sbyte) SupportClass.Identity(0xda), (sbyte) SupportClass.Identity(0xf5), (sbyte) 0x57, (sbyte) SupportClass.Identity(0xa8), (sbyte) 0x18, (sbyte) SupportClass.Identity(0xc0), (sbyte) SupportClass.Identity(0xdf), (sbyte) SupportClass.Identity(0xe7), (sbyte) SupportClass.Identity(0xaa), (sbyte) 0x2a, (sbyte) SupportClass.Identity(0xe0), (sbyte) 0x7c, (sbyte) 0x6f, (sbyte) 0x77, (sbyte) SupportClass.Identity(0xb1), (sbyte) 0x26, (sbyte) SupportClass.Identity(0xba), (sbyte) SupportClass.Identity(0xf9), (sbyte) 0x2e, (sbyte) 0x1d, (sbyte) 0x16, (sbyte) SupportClass.Identity(0xcb), (sbyte) SupportClass.Identity(0xb8), (sbyte) SupportClass.Identity(0xa2), (sbyte) 0x44, (sbyte) SupportClass.Identity(0xd5), (sbyte) 0x2f, (sbyte) 0x1a, (sbyte) 0x79, (sbyte) 0x74, (sbyte) SupportClass.Identity(0x87), (sbyte) 0x4b, (sbyte) 0x00, (sbyte) SupportClass.Identity(0xc9), (sbyte) 0x4a, (sbyte) 0x3a, (sbyte) 0x65, (sbyte) SupportClass.Identity(0x8f), (sbyte) SupportClass.Identity(0xe6), (sbyte) 0x5d, (sbyte) SupportClass.Identity(0xe5), (sbyte) 0x0a, (sbyte) 0x77, (sbyte) SupportClass.Identity(0xd8), (sbyte) 0x1a, (sbyte) 0x14, (sbyte) 0x41
			, (sbyte) 0x75, (sbyte) SupportClass.Identity(0xb1), (sbyte) SupportClass.Identity(0xe2), (sbyte) 0x50, (sbyte) 0x2c, (sbyte) SupportClass.Identity(0x93), (sbyte) 0x38, (sbyte) 0x2b, (sbyte) 0x6d, (sbyte) SupportClass.Identity(0xf3), (sbyte) SupportClass.Identity(0xf6), (sbyte) SupportClass.Identity(0xdb), (sbyte) 0x1f, (sbyte) SupportClass.Identity(0xcd), (sbyte) SupportClass.Identity(0xff), (sbyte) 0x14, (sbyte) 0x70, (sbyte) SupportClass.Identity(0xe7), (sbyte) 0x16, (sbyte) SupportClass.Identity(0xe8), (sbyte) 0x3d, (sbyte) SupportClass.Identity(0xf0), (sbyte) SupportClass.Identity(0xe3), (sbyte) SupportClass.Identity(0xbc), (sbyte) 0x5e, (sbyte) SupportClass.Identity(0xb6), (sbyte) 0x3f, (sbyte) SupportClass.Identity(0xcc), (sbyte) SupportClass.Identity(0x81), (sbyte) 0x24, (sbyte) 0x67, (sbyte) SupportClass.Identity(0xf3), (sbyte) SupportClass.Identity(0x97), (sbyte) 0x3b, (sbyte) SupportClass.Identity(0xfe), (sbyte) 0x3a, (sbyte) SupportClass.Identity(0x96), (sbyte) SupportClass.Identity(0x85), (sbyte) SupportClass.Identity(0xdf), (sbyte) SupportClass.Identity(0xe4), (sbyte) 0x6e, (sbyte) 0x3c, (sbyte) SupportClass.Identity(0x85), (sbyte) 0x05, (sbyte) 0x0e, (sbyte) SupportClass.Identity(0xa3), (sbyte) 0x2b, (sbyte) 0x07, (sbyte) SupportClass.Identity(0xc8), (sbyte) SupportClass.Identity(0xbf), (sbyte) SupportClass.Identity(0xe5), (sbyte) 0x13, (sbyte) SupportClass.Identity(0x82), (sbyte) 0x62, (sbyte) 0x08, (sbyte) 0x61, (sbyte) 0x69, (sbyte) 0x4b, (sbyte) 0x47, (sbyte) 0x62, (sbyte) 0x73, (sbyte) 0x44, (sbyte) 0x64, (sbyte) SupportClass.Identity(0x8e), (sbyte) SupportClass.Identity(0xe2), (sbyte) SupportClass.Identity(0x91), (sbyte) SupportClass.Identity(0xa6), (sbyte) SupportClass.Identity(0x9a), (sbyte) SupportClass.Identity(0xb7), (sbyte) SupportClass.Identity(0xe9), (sbyte) 0x04, (sbyte) SupportClass.Identity(0xb6), (sbyte) 0x54, (sbyte) 0x0c, (sbyte) SupportClass.Identity(0xc5), (sbyte) SupportClass.Identity(0xa9), (sbyte) 0x47, (sbyte) SupportClass.Identity(0xa6), (sbyte) 
			SupportClass.Identity(0xc9), (sbyte) 0x08, (sbyte) SupportClass.Identity(0xfe), (sbyte) 0x4e, (sbyte) SupportClass.Identity(0xa6), (sbyte) SupportClass.Identity(0xcc), (sbyte) SupportClass.Identity(0x8a), (sbyte) 0x5b, (sbyte) SupportClass.Identity(0x90), (sbyte) 0x6f, (sbyte) 0x2b, (sbyte) 0x3f, (sbyte) SupportClass.Identity(0xb6), (sbyte) 0x0a, (sbyte) SupportClass.Identity(0x96), (sbyte) SupportClass.Identity(0xc0), (sbyte) 0x78, (sbyte) 0x58, (sbyte) 0x3c, (sbyte) 0x76, (sbyte) 0x6d, (sbyte) SupportClass.Identity(0x94), (sbyte) 0x1a, (sbyte) SupportClass.Identity(0xe4), (sbyte) 0x4e, (sbyte) SupportClass.Identity(0xb8), (sbyte) 0x38, (sbyte) SupportClass.Identity(0xbb), (sbyte) SupportClass.Identity(0xf5), (sbyte) SupportClass.Identity(0xeb), (sbyte) 0x29, (sbyte) SupportClass.Identity(0xd8), (sbyte) SupportClass.Identity(0xb0), (sbyte) SupportClass.Identity(0xf3), (sbyte) 0x15, (sbyte) 0x1e, (sbyte) SupportClass.Identity(0x99), (sbyte) SupportClass.Identity(0x96), (sbyte) 0x3c, (sbyte) 0x5d, (sbyte) 0x63, (sbyte) SupportClass.Identity(0xd5), (sbyte) SupportClass.Identity(0xb1), (sbyte) SupportClass.Identity(0xad), (sbyte) 0x52, (sbyte) SupportClass.Identity(0xb8), (sbyte) 0x55, (sbyte) 0x70, (sbyte) 0x75, (sbyte) 0x3e, (sbyte) 0x1a, (sbyte) SupportClass.Identity(0xd5), (sbyte) SupportClass.Identity(0xda), (sbyte) SupportClass.Identity(0xf6), (sbyte) 0x7a, (sbyte) 0x48, (sbyte) 0x7d, (sbyte) 0x44, (sbyte) 0x41, (sbyte) SupportClass.Identity(0xf9), (sbyte) 0x11, (sbyte) SupportClass.Identity(0xce), (sbyte) SupportClass.Identity(0xd7), (sbyte) SupportClass.Identity(0xca), (sbyte) SupportClass.Identity(0xa5), (sbyte) 0x3d, (sbyte) 0x7a, (sbyte) 0x79, (sbyte) 0x7e, (sbyte) 0x7d, (sbyte) 0x25, (sbyte) 0x1b, (sbyte) 0x77, (sbyte) SupportClass.Identity(0xbc), (sbyte) SupportClass.Identity(0xf7), (sbyte) SupportClass.Identity(0xc7), (sbyte) 0x0f, (sbyte) SupportClass.Identity(0x84), (sbyte) SupportClass.Identity(0x95), (sbyte) 0x10, (sbyte) SupportClass.Identity(0x92), (sbyte) 0x67, (sbyte) 0x15, (
			sbyte) 0x11, (sbyte) 0x5a, (sbyte) 0x5e, (sbyte) 0x41, (sbyte) 0x66, (sbyte) 0x0f, (sbyte) 0x38, (sbyte) 0x03, (sbyte) SupportClass.Identity(0xb2), (sbyte) SupportClass.Identity(0xf1), (sbyte) 0x5d, (sbyte) SupportClass.Identity(0xf8), (sbyte) SupportClass.Identity(0xab), (sbyte) SupportClass.Identity(0xc0), (sbyte) 0x02, (sbyte) 0x76, (sbyte) SupportClass.Identity(0x84), (sbyte) 0x28, (sbyte) SupportClass.Identity(0xf4), (sbyte) SupportClass.Identity(0x9d), (sbyte) 0x56, (sbyte) 0x46, (sbyte) 0x60, (sbyte) 0x20, (sbyte) SupportClass.Identity(0xdb), (sbyte) 0x68, (sbyte) SupportClass.Identity(0xa7), (sbyte) SupportClass.Identity(0xbb), (sbyte) SupportClass.Identity(0xee), (sbyte) SupportClass.Identity(0xac), (sbyte) 0x15, (sbyte) 0x01, (sbyte) 0x2f, (sbyte) 0x20, (sbyte) 0x09, (sbyte) SupportClass.Identity(0xdb), (sbyte) SupportClass.Identity(0xc0), (sbyte) 0x16, (sbyte) SupportClass.Identity(0xa1), (sbyte) SupportClass.Identity(0x89), (sbyte) SupportClass.Identity(0xf9), (sbyte) SupportClass.Identity(0x94), (sbyte) 0x59, (sbyte) 0x00, (sbyte) SupportClass.Identity(0xc1), (sbyte) 0x76, (sbyte) SupportClass.Identity(0xbf), (sbyte) SupportClass.Identity(0xc1), (sbyte) 0x4d, (sbyte) 0x5d, (sbyte) 0x2d, (sbyte) SupportClass.Identity(0xa9), (sbyte) SupportClass.Identity(0x85), (sbyte) 0x2c, (sbyte) SupportClass.Identity(0xd6), (sbyte) SupportClass.Identity(0xd3), (sbyte) 0x14, (sbyte) SupportClass.Identity(0xcc), (sbyte) 0x02, (sbyte) SupportClass.Identity(0xc3), (sbyte) SupportClass.Identity(0xc2), (sbyte) SupportClass.Identity(0xfa), (sbyte) 0x6b, (sbyte) SupportClass.Identity(0xb7), (sbyte) SupportClass.Identity(0xa6), (sbyte) SupportClass.Identity(0xef), (sbyte) SupportClass.Identity(0xdd), (sbyte) 0x12, (sbyte) 0x26, (sbyte) SupportClass.Identity(0xa4), (sbyte) 0x63, (sbyte) SupportClass.Identity(0xe3), (sbyte) 0x62, (sbyte) SupportClass.Identity(0xbd), (sbyte) 0x56, (sbyte) SupportClass.Identity(0x8a), (sbyte) 0x52, (sbyte) 0x2b, (sbyte) SupportClass.Identity(0xb9), (sbyte) SupportClass.Identity
			(0xdf), (sbyte) 0x09, (sbyte) SupportClass.Identity(0xbc), (sbyte) 0x0e, (sbyte) SupportClass.Identity(0x97), (sbyte) SupportClass.Identity(0xa9), (sbyte) SupportClass.Identity(0xb0), (sbyte) SupportClass.Identity(0x82), (sbyte) 0x46, (sbyte) 0x08, (sbyte) SupportClass.Identity(0xd5), (sbyte) 0x1a, (sbyte) SupportClass.Identity(0x8e), (sbyte) 0x1b, (sbyte) SupportClass.Identity(0xa7), (sbyte) SupportClass.Identity(0x90), (sbyte) SupportClass.Identity(0x98), (sbyte) SupportClass.Identity(0xb9), (sbyte) SupportClass.Identity(0xbb), (sbyte) 0x3c, (sbyte) 0x17, (sbyte) SupportClass.Identity(0x9a), (sbyte) SupportClass.Identity(0xf2), (sbyte) SupportClass.Identity(0x82), (sbyte) SupportClass.Identity(0xba), (sbyte) 0x64, (sbyte) 0x0a, (sbyte) 0x7f, (sbyte) SupportClass.Identity(0xca), (sbyte) 0x5a, (sbyte) SupportClass.Identity(0x8c), (sbyte) 0x7c, (sbyte) SupportClass.Identity(0xd3), (sbyte) 0x79, (sbyte) 0x09, (sbyte) 0x5b, (sbyte) 0x26, (sbyte) SupportClass.Identity(0xbb), (sbyte) SupportClass.Identity(0xbd), (sbyte) 0x25, (sbyte) SupportClass.Identity(0xdf), (sbyte) 0x3d, (sbyte) 0x6f, (sbyte) SupportClass.Identity(0x9a), (sbyte) SupportClass.Identity(0x8f), (sbyte) SupportClass.Identity(0xee), (sbyte) 0x21, (sbyte) 0x66, (sbyte) SupportClass.Identity(0xb0), (sbyte) SupportClass.Identity(0x8d), (sbyte) SupportClass.Identity(0x84), (sbyte) 0x4c, (sbyte) SupportClass.Identity(0x91), (sbyte) 0x45, (sbyte) SupportClass.Identity(0xd4), (sbyte) 0x77, (sbyte) 0x4f, (sbyte) SupportClass.Identity(0xb3), (sbyte) SupportClass.Identity(0x8c), (sbyte) SupportClass.Identity(0xbc), (sbyte) SupportClass.Identity(0xa8), (sbyte) SupportClass.Identity(0x99), (sbyte) SupportClass.Identity(0xaa), (sbyte) 0x19, (sbyte) 0x53, (sbyte) 0x7c, (sbyte) 0x02, (sbyte) SupportClass.Identity(0x87), (sbyte) SupportClass.Identity(0xbb), (sbyte) 0x0b, (sbyte) 0x7c, (sbyte) 0x1a, (sbyte) 0x2d, (sbyte) SupportClass.Identity(0xdf), (sbyte) 0x48, (sbyte) 0x44, (sbyte) 0x06, (sbyte) SupportClass.Identity(0xd6), (sbyte) 0x7d, (sbyte) 
			0x0c, (sbyte) 0x2d, (sbyte) 0x35, (sbyte) 0x76, (sbyte) SupportClass.Identity(0xae), (sbyte) SupportClass.Identity(0xc4), (sbyte) 0x5f, (sbyte) 0x71, (sbyte) SupportClass.Identity(0x85), (sbyte) SupportClass.Identity(0x97), (sbyte) SupportClass.Identity(0xc4), (sbyte) 0x3d, (sbyte) SupportClass.Identity(0xef), (sbyte) 0x52, (sbyte) SupportClass.Identity(0xbe), (sbyte) 0x00, (sbyte) SupportClass.Identity(0xe4), (sbyte) SupportClass.Identity(0xcd), (sbyte) 0x49, (sbyte) SupportClass.Identity(0xd1), (sbyte) SupportClass.Identity(0xd1), (sbyte) 0x1c, (sbyte) 0x3c, (sbyte) SupportClass.Identity(0xd0), (sbyte) 0x1c, (sbyte) 0x42, (sbyte) SupportClass.Identity(0xaf), (sbyte) SupportClass.Identity(0xd4), (sbyte) SupportClass.Identity(0xbd), (sbyte) 0x58, (sbyte) 0x34, (sbyte) 0x07, (sbyte) 0x32, (sbyte) SupportClass.Identity(0xee), (sbyte) SupportClass.Identity(0xb9), (sbyte) SupportClass.Identity(0xb5), (sbyte) SupportClass.Identity(0xea), (sbyte) SupportClass.Identity(0xff), (sbyte) SupportClass.Identity(0xd7), (sbyte) SupportClass.Identity(0x8c), (sbyte) 0x0d, (sbyte) 0x2e, (sbyte) 0x2f, (sbyte) SupportClass.Identity(0xaf), (sbyte) SupportClass.Identity(0x87), (sbyte) SupportClass.Identity(0xbb), (sbyte) SupportClass.Identity(0xe6), (sbyte) 0x52, (sbyte) 0x71, (sbyte) 0x22, (sbyte) SupportClass.Identity(0xf5), (sbyte) 0x25, (sbyte) 0x17, (sbyte) SupportClass.Identity(0xa1), (sbyte) SupportClass.Identity(0x82), (sbyte) 0x04, (sbyte) SupportClass.Identity(0xc2), (sbyte) 0x4a, (sbyte) SupportClass.Identity(0xbd), (sbyte) 0x57, (sbyte) SupportClass.Identity(0xc6), (sbyte) SupportClass.Identity(0xab), (sbyte) SupportClass.Identity(0xc8), (sbyte) 0x35, (sbyte) 0x0c, (sbyte) 0x3c, (sbyte) SupportClass.Identity(0xd9), (sbyte) SupportClass.Identity(0xc2), (sbyte) 0x43, (sbyte) SupportClass.Identity(0xdb), (sbyte) 0x27, (sbyte) SupportClass.Identity(0x92), (sbyte) SupportClass.Identity(0xcf), (sbyte) SupportClass.Identity(0xb8), (sbyte) 0x25, (sbyte) 0x60, (sbyte) SupportClass.Identity(0xfa), (sbyte) 0x21, (
			sbyte) 0x3b, (sbyte) 0x04, (sbyte) 0x52, (sbyte) SupportClass.Identity(0xc8), (sbyte) SupportClass.Identity(0x96), (sbyte) SupportClass.Identity(0xba), (sbyte) 0x74, (sbyte) SupportClass.Identity(0xe3), (sbyte) 0x67, (sbyte) 0x3e, (sbyte) SupportClass.Identity(0x8e), (sbyte) SupportClass.Identity(0x8d), (sbyte) 0x61, (sbyte) SupportClass.Identity(0x90), (sbyte) SupportClass.Identity(0x92), (sbyte) 0x59, (sbyte) SupportClass.Identity(0xb6), (sbyte) 0x1a, (sbyte) 0x1c, (sbyte) 0x5e, (sbyte) 0x21, (sbyte) SupportClass.Identity(0xc1), (sbyte) 0x65, (sbyte) SupportClass.Identity(0xe5), (sbyte) SupportClass.Identity(0xa6), (sbyte) 0x34, (sbyte) 0x05, (sbyte) 0x6f, (sbyte) SupportClass.Identity(0xc5), (sbyte) 0x60, (sbyte) SupportClass.Identity(0xb1), (sbyte) SupportClass.Identity(0x83), (sbyte) SupportClass.Identity(0xc1), (sbyte) SupportClass.Identity(0xd5), (sbyte) SupportClass.Identity(0xd5), (sbyte) SupportClass.Identity(0xed), (sbyte) SupportClass.Identity(0xd9), (sbyte) SupportClass.Identity(0xc7), (sbyte) 0x11, (sbyte) 0x7b, (sbyte) 0x49, (sbyte) 0x7a, (sbyte) SupportClass.Identity(0xf9), (sbyte) SupportClass.Identity(0xf9), (sbyte) SupportClass.Identity(0x84), (sbyte) 0x47, (sbyte) SupportClass.Identity(0x9b), (sbyte) SupportClass.Identity(0xe2), (sbyte) SupportClass.Identity(0xa5), (sbyte) SupportClass.Identity(0x82), (sbyte) SupportClass.Identity(0xe0), (sbyte) SupportClass.Identity(0xc2), (sbyte) SupportClass.Identity(0x88), (sbyte) SupportClass.Identity(0xd0), (sbyte) SupportClass.Identity(0xb2), (sbyte) 0x58, (sbyte) SupportClass.Identity(0x88), (sbyte) 0x7f, (sbyte) 0x45, (sbyte) 0x09, (sbyte) 0x67, (sbyte) 0x74, (sbyte) 0x61, (sbyte) SupportClass.Identity(0xbf), (sbyte) SupportClass.Identity(0xe6), (sbyte) 0x40, (sbyte) SupportClass.Identity(0xe2), (sbyte) SupportClass.Identity(0x9d), (sbyte) SupportClass.Identity(0xc2), (sbyte) 0x47, (sbyte) 0x05, (sbyte) SupportClass.Identity(0x89), (sbyte) SupportClass.Identity(0xed), (sbyte) SupportClass.Identity(0xcb), (sbyte) SupportClass.Identity(
			0xbb), (sbyte) SupportClass.Identity(0xb7), (sbyte) 0x27, (sbyte) SupportClass.Identity(0xe7), (sbyte) SupportClass.Identity(0xdc), (sbyte) 0x7a, (sbyte) SupportClass.Identity(0xfd), (sbyte) SupportClass.Identity(0xbf), (sbyte) SupportClass.Identity(0xa8), (sbyte) SupportClass.Identity(0xd0), (sbyte) SupportClass.Identity(0xaa), (sbyte) 0x10, (sbyte) 0x39, (sbyte) 0x3c, (sbyte) 0x20, (sbyte) SupportClass.Identity(0xf0), (sbyte) SupportClass.Identity(0xd3), (sbyte) 0x6e, (sbyte) SupportClass.Identity(0xb1), (sbyte) 0x72, (sbyte) SupportClass.Identity(0xf8), (sbyte) SupportClass.Identity(0xe6), (sbyte) 0x0f, (sbyte) SupportClass.Identity(0xef), (sbyte) 0x37, (sbyte) SupportClass.Identity(0xe5), (sbyte) 0x09, (sbyte) 0x33, (sbyte) 0x5a, (sbyte) SupportClass.Identity(0x83), (sbyte) 0x43, (sbyte) SupportClass.Identity(0x80), (sbyte) 0x4f, (sbyte) 0x65, (sbyte) 0x2f, (sbyte) 0x7c, (sbyte) SupportClass.Identity(0x8c), (sbyte) 0x6a, (sbyte) SupportClass.Identity(0xa0), (sbyte) SupportClass.Identity(0x82), (sbyte) 0x0c, (sbyte) SupportClass.Identity(0xd4), (sbyte) SupportClass.Identity(0xd4), (sbyte) SupportClass.Identity(0xfa), (sbyte) SupportClass.Identity(0x81), (sbyte) 0x60, (sbyte) 0x3d, (sbyte) SupportClass.Identity(0xdf), (sbyte) 0x06, (sbyte) SupportClass.Identity(0xf1), (sbyte) 0x5f, (sbyte) 0x08, (sbyte) 0x0d, (sbyte) 0x6d, (sbyte) 0x43, (sbyte) SupportClass.Identity(0xf2), (sbyte) SupportClass.Identity(0xe3), (sbyte) 0x11, (sbyte) 0x7d, (sbyte) SupportClass.Identity(0x80), (sbyte) 0x32, (sbyte) SupportClass.Identity(0xc5), (sbyte) SupportClass.Identity(0xfb), (sbyte) SupportClass.Identity(0xc5), (sbyte) SupportClass.Identity(0xd9), (sbyte) 0x27, (sbyte) SupportClass.Identity(0xec), (sbyte) SupportClass.Identity(0xc6), (sbyte) 0x4e, (sbyte) 0x65, (sbyte) 0x27, (sbyte) 0x76, (sbyte) SupportClass.Identity(0x87), (sbyte) SupportClass.Identity(0xa6), (sbyte) SupportClass.Identity(0xee), (sbyte) SupportClass.Identity(0xee), (sbyte) SupportClass.Identity(0xd7), (sbyte) SupportClass.Identity(0x8b), (
			sbyte) SupportClass.Identity(0xd1), (sbyte) SupportClass.Identity(0xa0), (sbyte) 0x5c, (sbyte) SupportClass.Identity(0xb0), (sbyte) 0x42, (sbyte) 0x13, (sbyte) 0x0e, (sbyte) SupportClass.Identity(0x95), (sbyte) 0x4a, (sbyte) SupportClass.Identity(0xf2), (sbyte) 0x06, (sbyte) SupportClass.Identity(0xc6), (sbyte) 0x43, (sbyte) 0x33, (sbyte) SupportClass.Identity(0xf4), (sbyte) SupportClass.Identity(0xc7), (sbyte) SupportClass.Identity(0xf8), (sbyte) SupportClass.Identity(0xe7), (sbyte) 0x1f, (sbyte) SupportClass.Identity(0xdd), (sbyte) SupportClass.Identity(0xe4), (sbyte) 0x46, (sbyte) 0x4a, (sbyte) 0x70, (sbyte) 0x39, (sbyte) 0x6c, (sbyte) SupportClass.Identity(0xd0), (sbyte) SupportClass.Identity(0xed), (sbyte) SupportClass.Identity(0xca), (sbyte) SupportClass.Identity(0xbe), (sbyte) 0x60, (sbyte) 0x3b, (sbyte) SupportClass.Identity(0xd1), (sbyte) 0x7b, (sbyte) 0x57, (sbyte) 0x48, (sbyte) SupportClass.Identity(0xe5), (sbyte) 0x3a, (sbyte) 0x79, (sbyte) SupportClass.Identity(0xc1), (sbyte) 0x69, (sbyte) 0x33, (sbyte) 0x53, (sbyte) 0x1b, (sbyte) SupportClass.Identity(0x80), (sbyte) SupportClass.Identity(0xb8), (sbyte) SupportClass.Identity(0x91), (sbyte) 0x7d, (sbyte) SupportClass.Identity(0xb4), (sbyte) SupportClass.Identity(0xf6), (sbyte) 0x17, (sbyte) 0x1a, (sbyte) 0x1d, (sbyte) 0x5a, (sbyte) 0x32, (sbyte) SupportClass.Identity(0xd6), (sbyte) SupportClass.Identity(0xcc), (sbyte) 0x71, (sbyte) 0x29, (sbyte) 0x3f, (sbyte) 0x28, (sbyte) SupportClass.Identity(0xbb), (sbyte) SupportClass.Identity(0xf3), (sbyte) 0x5e, (sbyte) 0x71, (sbyte) SupportClass.Identity(0xb8), (sbyte) 0x43, (sbyte) SupportClass.Identity(0xaf), (sbyte) SupportClass.Identity(0xf8), (sbyte) SupportClass.Identity(0xb9), (sbyte) 0x64, (sbyte) SupportClass.Identity(0xef), (sbyte) SupportClass.Identity(0xc4), (sbyte) SupportClass.Identity(0xa5), (sbyte) 0x6c, (sbyte) 0x08, (sbyte) 0x53, (sbyte) SupportClass.Identity(0xc7), (sbyte) 0x00, (sbyte) 0x10, (sbyte) 0x39, (sbyte) 0x4f, (sbyte) SupportClass.Identity(0xdd), (sbyte) 
			SupportClass.Identity(0xe4), (sbyte) SupportClass.Identity(0xb6), (sbyte) 0x19, (sbyte) 0x27, (sbyte) SupportClass.Identity(0xfb), (sbyte) SupportClass.Identity(0xb8), (sbyte) SupportClass.Identity(0xf5), (sbyte) 0x32, (sbyte) 0x73, (sbyte) SupportClass.Identity(0xe5), (sbyte) SupportClass.Identity(0xcb), (sbyte) 0x32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
		
		internal static sbyte[] chkb = new sbyte[60 + 4];
		
		/// <summary> Calculates a crc checksum-sequence over an array.</summary>
		public static sbyte BlockSequenceCRCByte(sbyte[] base_Renamed, int offset, int length, int sequence)
		{
			if (sequence < 0)
				Sys.Error("sequence < 0, this shouldn't happen\n");
			
			//p_ndx = (sequence % (sizeof(chktbl) - 4));
			int p_ndx = (sequence % (1024 - 4));
			
			//memcpy(chkb, base, length);
			length = System.Math.Min(60, length);
			Array.Copy(base_Renamed, offset, chkb, 0, length);
			
			chkb[length] = chktbl[p_ndx + 0];
			chkb[length + 1] = chktbl[p_ndx + 1];
			chkb[length + 2] = chktbl[p_ndx + 2];
			chkb[length + 3] = chktbl[p_ndx + 3];
			
			length += 4;
			
			// unsigned short
			int crc = CRC.CRC_Block(chkb, length);
			
			int x = 0;
			for (int n = 0; n < length; n++)
				x += (chkb[n] & 0xFF);
			
			crc ^= x;
			
			return (sbyte) (crc & 0xFF);
		}
		static Com()
		{
			com_argv = new System.String[Defines.MAX_NUM_ARGVS];
			com_token = new char[Defines.MAX_TOKEN_CHARS];
			Error_f = new AnonymousClassxcommand_t();
		}
	}
}